%%%----------------------------------------------------------------------------------------------
%%% File        : gen_server_tmpl.erl
%%% Author      : flw <su2admin@gmail.com>
%%% Description :
%%%
%%% Created     : 2011-04-01
%%%----------------------------------------------------------------------------------------------
-module().

-behaviour(gen_server).

%% API
-export([ start_link/0 ]).

%% gen_server callbacks
-export([ init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3 ]).

-record( state, {} ).


%%===============================================================================================
%% API
%%===============================================================================================
%%-----------------------------------------------------------------------------------------------
%% Function     : start_link() -> {ok, Pid} | ignore | {error, Error}
%% Description  : Starts the server
%%-----------------------------------------------------------------------------------------------
start_link() ->
    gen_server:start_link( {local, ?SERVER}, ?MODULE, [], [] ).


%%===============================================================================================
%% gen_server callbacks
%%===============================================================================================
%%-----------------------------------------------------------------------------------------------
%% Function     : init(Args) -> {ok, State}             |
%%                              {ok, State, Timeout}    |
%%                              ignore                  |
%%                              {stop, Reasion}
%% Description  : Initiates the server
%%-----------------------------------------------------------------------------------------------
init([]) ->
    {ok, #state{}}.


%%-----------------------------------------------------------------------------------------------
%% Function     : handle_call(Request, From, State) ->  {reply, Reply, State}           |
%%                                                      {reply, Reply, State, Timeout}  |
%%                                                      {noreply, State}                |
%%                                                      {noreply, State, Timeout}       |
%%                                                      {stop, Reason, Reply, State}    |
%%                                                      {stop, Reason, State}
%% Description  : Handling call messages
%%-----------------------------------------------------------------------------------------------
handle_call(_Request, _From, State) ->
    Reply = ok,
    {reply, Reply, State}.


%%-----------------------------------------------------------------------------------------------
%% Function     : handle_cast(Msg, State) ->    {noreply, State}            |
%%                                              {noreply, State, Timeout}   |
%%                                              {stop, Reason, State}
%% Description  : Handling cast messages
%%-----------------------------------------------------------------------------------------------
handle_cast(_Msg, State) ->
    {noreply, State}.


%%-----------------------------------------------------------------------------------------------
%% Function     : handle_info(Info, State) ->   {noreply, State}            |
%%                                              {noreply, State, Timeout}   |
%%                                              {stop, Reason, State}
%% Description  : Handling all non call/cast messages
%%-----------------------------------------------------------------------------------------------
handle_info(_Info, State) ->
    {noreply, State}.


%%-----------------------------------------------------------------------------------------------
%% Function     : terminate(Reason, State) -> void ()
%% Description  : This function is called by a gen_server when it is about to terminate.
%%                It should be the opposite of Module:init/1 and do any necessary cleaning up.
%%                When it returns, the gen_server terminates with Reason.
%%                The return value is ignored.
%%-----------------------------------------------------------------------------------------------
terminate(_Reason, _State) ->
    ok.


%%-----------------------------------------------------------------------------------------------
%% Function     : code_change(OldVsn, State, Extra) -> {ok, NewState}
%% Description  : Convert process state when code is changed.
%%-----------------------------------------------------------------------------------------------
code_change(_OldVsn, State, _Extra) ->
    {ok, State}.


%%===============================================================================================
%% Internal functions
%%===============================================================================================
%%-----------------------------------------------------------------------------------------------
%% Function     : 
%% Description  : 
%%-----------------------------------------------------------------------------------------------
